package com.ssy.lingxi.contract.model.vo.sign.response;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

/**
 * 采购单详情
 *
 * @author wrc
 * @date 2020/8/27
 */
@Data
public class ProcurementOrderDetailsResponse {

    /**
     * 主键id
     */
    private Long id;

    /**
     * 下单模式ID
     */
    private Long orderModel;

    /**
     * 对应报价单号
     */
    private String quotationNo;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 总计金额
     */
    private Double sumPrice;

    /**
     * 运费
     */
    private Double freight = 0.00;


    /**
     * 优惠抵扣
     */
    private Double preferentialDeduction = 0.00;


    /**
     * 合计金额
     */
    private Double amount;

    /**
     * 对应报价单ID
     */
    private Long orderModelId;

    /**
     * 订单摘要
     */
    private String orderThe;

    /**
     * 订单类型：1.询价采购 2.需求采购 3.现货采购 4.集采   5.渠道直采 6.渠道现货 7.积分兑换 8.渠道积分兑换
     */
    private Integer type;

    /**
     * 供应会员名字
     */
    private String supplyMembersName;

    /**
     * 供应会员Id
     */
    private Long supplyMembersId;

    /**
     * 供应会员角色Id
     */
    private Long supplyMembersRoleId;
    /**
     * 活动编号
     */
    private String actinityNo;

    /**
     * 活动ID
     */
    private Long actinityId;

    /**
     * 活动名称
     */
    private String actinityName;


    /**
     * 活动开始时间
     */
    private Long actinityTimeStart;


    /**
     * 活动结束时间
     */
    private Long actinityTimeEnd;


    /**
     * 交付日期
     */
    private Long deliveryTime;


    /**
     * 交付地址ID
     */
    private Long deliveryAddresId;

    /**
     * 交付地址收货人名字
     */
    private String receiverName;


    /**
     * 交付地址收是否默认0.否 1.是
     */
    private Integer isDefault;

    /**
     * 交付地址详情
     */
    private String fullAddress;


    /**
     * 交付地址 联系电话
     */
    private String phone;

    /**
     * 提货方式:1.物流 2.自提 3.无需配送
     */
    private Integer deliveryType;


    /**
     * 自提地址
     */
    private String pickUpAddress;


    /**
     * 是否需要发票：1.是 0.否
     */
    private Integer needTheInvoice;


    /**
     * 发票ID
     */
    private Long theInvoiceId;

    /**
     * 包装要求
     */
    private String pageRequire;


    /**
     * 其他要求
     */
    private String restsRequire;


    @ApiModelProperty(value = "创建时间")
    private Long createTime;

    @ApiModelProperty(value = "更新时间")
    private Long updateTime;

    @ApiModelProperty(value = "创建人会员角色ID")
    private Long createRoleId;


    @ApiModelProperty(value = "创建会员ID")
    private Long createMemberId;

    /**
     * 采购订单外部状态:-1.取消订单1.待提交订单2.待确认订单,3.待确认电子合同4.待订单支付5.待确认支付结果6.待新增销售发货单7.待新增物流单,8.待订单发货确认9.待新增采购入库单,10.待订单收货确认11.待确认回单12.待订单归档供应商,13.待订单归档采购商,14.完成订单20.不接受订单,21.确认没到账,22.继续发货,23.待支付尾款24待确认支付结果25.确认未到账
     */
    private Integer externalState;


    /**
     * 采购订单内部状态:-1.取消订单1.待新增采购订单2.待审核订单(一级),3.待审核订单(二级)4.待提交订单 5.审核通过 6.审核订单不通过(一级),7.审核订单不通过(二级),8.待支付订单10.支付成功,11.支付失败12.待确认收货,14.订单待入库15.订单待归档16.订单入库17.待手工收货0.完成订单
     */
    private Integer interiorState;

    /**
     * 销售单内部状态:,1.待提交审核订单2.待审核订单(一级),3.待审核订单(二级)4.待确认订单,5.接受订单
     * 6.不接受订单,7.审核订单(一级)不通过8.审核订单(二级)不通过,9.不接受订单10.待确认支付结果,
     * 16.支付结果确认到账17.支付结果没到账,18.订单销售发货单待创建19.待新增物流单,20.订单发货待确认
     * 23.待确认回单,24.订单待归档25.待审核发货单26.待审核物流单,27.待手工确认发货
     * 0.完成订单 28.不接受物流单   29.订单已归档-销售
     */
    private Integer  purchaseOrderInteriorState;



    /**
     * 外部工作流流程taskId
     */
    private String externalTaskId;


    /**
     * 内部工作流流程taskId
     */
    private String interiorTaskId;

    /**
     * 订单商品详情列表
     */
    private List<OrderProductResponse> orderProductRequests;


    /**
     * 发货地址ID
     */
    private Long addresId;

    /**
     * 发货地址名字
     */
    private String name;

    /**
     * 发货时间
     */
    private Long deliverTime;

    /**
     * 发货单号
     */
    private String deliverNo;

    /**
     * 订单ID
     */
    private Long orderId;

    /**
     * 物流公司
     */
    private String logisticsCompany;


    /**
     * 物流公司id
     */
    private Long logisticsCompanyId;


    /**
     * 合同模板ID
     */
    private Long contractTemplateId;



    /**
     * 电子合同url
     */
    private String electronicContractUrl;

    /**
     * 电子合同名字
     */
    private String electronicContractName;

    /**
     * 创建会员名字
     */
    private String createMemberName;

    /**
     * 是否选用电子合同:1.是 0.否
     */
    private Integer isElectronicContract;


    /**
     * 供应会员的资金归集模式 :1.平台代收 2.会员直接到账
     */
    private Long ruleConfigurationId;

    /**
     * 合同签署ID
     */
    private Long signatureLogId;


    /**
     * 是否使用电子合同： 1. 是 0.否
     */
    private Integer usingElectronicContracts=0;


    /**
     * 已支付金额
     */
    private Double   alreadyPay;
    /**
     *商城ID
     */
    private Long shopId;

    /**
     * 工作流枚举
     */
    private   Integer processEnum;

    public Double getSumPrice() {
        return BigDecimal.valueOf(sumPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
    }

    public Double getFreight() {
        return  BigDecimal.valueOf(freight).setScale(2, RoundingMode.HALF_UP).doubleValue();
    }

    public Double getAmount() {
        return BigDecimal.valueOf(amount).setScale(2, RoundingMode.HALF_UP).doubleValue();
    }


    /**
     *工作流程外部状态名字
     */
    private String externalStateName;
    /**
     *工作流程内部状态名字
     */
    private String interiorStateName;


    /**
     * 订单类型名字
     */
    private String typeName;
}
